A Database Coprocessor for Haskell

نویسندگان

  • George Giorgidze
  • Torsten Grust
  • Tom Schreiber
  • Jeroen Weijers
چکیده

Relational database management systems (RDBMSs) provide the best understood and most carefully engineered query processing infrastructure available today. However, RDBMSs are often operated as plain stores that do little more than reproduce stored data items for further processing outside the database host, in the general-purpose programming language heap. One reason for this is that the aforementioned query processing capabilities require mastering of advanced features of query languages (e.g., SQL) in addition to the general-purpose language the application is programmed in. Moreover, the query languages are often inadequately integrated into the host programming language. One way to solve these problems is to use RDBMSs as a coprocessor for general-purpose programming languages, for those program parts that carry out data-intensive and data-parallel computations. In this paper we present a library for database-supported program execution in Haskell. Data-intensive and data-parallel computations are expressed using familiar combinators from the standard list prelude and expressive list comprehension notation. The library, in addition to queries of basic types, supports computations over arbitrarily nested tuples and lists. The implementation minimises unnecessary data transfer and context switching between the database coprocessor and the programming language run-time by ensuring that the least possible number of queries is generated when executing the library functions. Although Haskell has inspired a number of language-integrated query facilities (most notably LINQ in Microsoft’s .NET framework), as far as we know this is the first proposal and implementation of database-supported program execution facility for Haskell.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Haskell Boards the Ferry - Database-Supported Program Execution for Haskell

Relational database management systems can be used as a coprocessor for general-purpose programming languages, especially for those program fragments that carry out data-intensive and data-parallel computations. In this paper we present a Haskell library for databasesupported program execution. Data-intensive and data-parallel computations are expressed using familiar combinators from the stand...

متن کامل

HeisenBase: Understanding Database Performance in Haskell

This work aims to develop a performant relational database management system, HeisenBase, in the functional programming language Haskell. Much work has been published with the intent to create sensible interaction layers between the Haskell programming language and existing database software. We build the DBMS itself in Haskell in order to understand the benefits and drawbacks of a Haskell-base...

متن کامل

Hitchhiker ’ s Guide to GUM

This report documents the process of extending the GUM run-time system (RTS) for Glasgow parallel Haskell (GpH). First, we obtain the sources, set up the environment and build the Glasgow Haskell Compiler (GHC) and GUM RTS. Next, GpH and Evaluation Strategies are briefly introduced, followed by a short discussion of parallelisation, profiling and optimisation. Subsequently, we illustrate how to...

متن کامل

Scripting XML with Generic Haskell

A generic program is written once and works on values of many data types. Generic Haskell is a recent extension of the functional programming language Haskell that supports generic programming. This paper discusses how Generic Haskell can be used to implement XML tools whose behaviour depends on the DTD or Schema of the input XML document. Example tools include XML editors, databases, and compr...

متن کامل

HiDb: A Haskell In-Memory Relational Database

We describe our experience implementing an in-memory relational database in Haskell that supports the standard CRUD (create, read, update, delete) operations while providing the requisite ACID (atomicity, consistency, isolation, durability) guarantees. We rely on Haskell’s STM module to provide atomicity and isolation. We use a combination of STM, Haskell’s type system, and dynamic type-checkin...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2010